package com.ys.mapper.business;

import com.ys.entity.advanced.*;
import com.ys.entity.business.*;
import com.ys.entity.finance.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;

@Mapper
public interface DiySqlMapper {

	/*
	 * 更新栏目的排序序号
	 */
	public int updateNewsItemOfSortNo(@Param("id")Long id, @Param("sortNo")Integer sortNo);

	/**
	 * 更新店铺亚马逊订单最后同步时间
	 * @param params
	 * @return
	 */
	int updateTpAmazonShopByLastOrderSyncDate(@Param("guid")String guid, @Param("lastOrderSyncDate")String lastOrderSyncDate);

	int updateTpDataExecutionByPaymentTime(
			@Param("paymentTime")String paymentTime,
			@Param("type")String type,
			@Param("message")String message,
			@Param("updateTime")Date updateTime);

	public int getNextSortNoOfTbBaseInfo(@Param("vtype")String vtype);

	public int getNextSortNoOfYsDict(@Param("dictKey")String dictKey);

	/**
	 * 获取库存修改单最新一条BID
	 * @author Jason
	 */
	public String getLatestBidOfStockOpe();

	public int updateRegionCodeOfShop();

	public int updateTcwAccountDetailedForCompanyBatch();

	public int updateTcwAccountDetailedForCompanyByGuid(@Param("guid")String guid);

	public int deleteTpDataExecutionhDetailByIdMax(@Param("idMax")Long idMax, @Param("dayRun")String dayRun, @Param("createTimeMin")String createTimeMin);

	public void deleteYsRoleMenuByRoleIdAndMenuId(@Param("roleId")Long roleId, @Param("menuId")Long menuId);

	public void deleteYsRoleButtonByRoleIdAndButtonId(@Param("roleId")Long roleId, @Param("buttonId")Long buttonId);

	/**
	 * 查询统计数据
	 */
	List<Map<String, Object>> searchTimeCheck(@Param("countMonthMin") String countMonthMin,@Param("countMonthMax") String countMonthMax,@Param("countType") int countType);
	/**
	 * 删除统计数据
	 */
	void deleteTimeCheck(@Param("countMonth") String countMonth);

	/**
	 * 批量新增店铺跟踪信息表
	 * @param list
	 * @return
	 */
	public int insertBatchTpShopRegisterPhaseRecord(List<TpShopRegisterPhaseRecord> list);

	/**
	 * 删除店铺跟踪信息表
	 */
	void deleteTpShopRegisterPhaseRecord(@Param("operateCompanyId")Long operateCompanyId);

	/**
	 * 删除店铺跟踪信息表
	 */
	void deleteTpShopStopPhaseRecord(@Param("operateCompanyId")Long operateCompanyId);

	/**
	 * 修改网上商品信息表
	 */
	int updateTpAmazonShopProductBatch(List<TpAmazonShopProduct> list);


	int updateTpAmazonShopProductBatchNew(List<TpAmazonShopProduct> list);

	void deleteAmazonShopProductCount(TpAmazonShopProductCount entity);

	/**
	 * 批量新增运营分析表数据
	 */
	int insertAmazonShopProductCount(List<TpAmazonShopProductCount> list);

	/**
	 * 批量新增运营分析表数据
	 */
	int insertAmazonShopProductCountAll(List<TpAmazonShopProductCount> list);

	/**
	 * 批量新增网店商品每天数据
	 */
	int insertTpAmazonShopProductReportBatch(@Param("nowDateStr") String nowDateStr);

	/**
	 * 批量修改网店商品每天数据
	 */
	int updateTpAmazonShopProductReportBatch(List<TpAmazonShopProductReport> list);

	/**
	 * 修改网店商品每天数据
	 */
	int updateTpAmazonShopProductReport(TpAmazonShopProductReport entity);

	/**
	 * 删除网店商品每天数据
	 */
	int delTpAmazonShopProductReport();


	/**
	 * 批量修改运营分析表数据
	 */
	int updateAmazonShopProductCount(List<Map<String, Object>> list);

	/**
	 * 批量修改运营分析表-全数据
	 */
	int updateAmazonShopProductCountAll(List<Map<String, Object>> list);
	/**
	 * 查询统计未入库的采购库存，根据店铺id
	 */
	List<Map<String, Object>> searchNoStorageCountByShopId(@Param("shopId") String shopId);

	void deleteAmazonShopProductCountYesterDay(TpAmazonShopProductCount entity);


	/**
	 * 查询店铺跟踪表的合计数据
	 */
	List<Map<String, Object>> getTotalCountByAnalysis(Map<String, Object> searchInfo);


	/**
	 * 查询店铺跟踪表的合计数据
	 */
	List<Map<String, Object>> getAnalysisTotalCountByOrderDaily(Map<String, Object> searchInfo);

	/**
	 * 查询统计未入库的采购库存的合计数据
	 */
	List<Map<String, Object>> searchNoStorageTotalCount(@Param("shopName") String shopName,@Param("companyName") String companyName,@Param("productCode") String productCode,@Param("productName") String productName);
	/**
	 * 查询上个月精品销售数量
	 */
	List<Map<String, Object>> searchOldMonthElaborateOrderList(@Param("startTime") String startTime,@Param("endTime") String endTime);
	/**
	 * 查询上个月全部销售数量
	 */
	List<Map<String, Object>> searchOldMonthAllOrderList(@Param("startTime") String startTime,@Param("endTime") String endTime);

	/**
	 * 修改目标系数
	 */
	int updateYsDictByAnalysisDailyTargetCoefficient(@Param("dictName") String dictName,@Param("dictValue") String dictValue);


	void deleteTpGaugeMaintenance(@Param("id")Long id);

	void deleteTpProductBasis(@Param("id")Long id);

	void deleteTpProductActive(@Param("id")Long id);

	void deleteTbBaseinfoDwmc(@Param("id")Long id);

	void deleteTbBaseinfoLmwh(@Param("id")Long id);

	void deleteTbBaseinfoSpcz(@Param("id")Long id);

	void deleteTbBaseinfoSppl(@Param("id")Long id);

	void deleteTbBaseinfoSppm(@Param("id")Long id);

	void deleteTbBaseinfoSpyt(@Param("id")Long id);

	void deleteTbSite(@Param("id")Long id);

	void deleteTpListingApply(@Param("id")Long id);


	/**
	 * 查询仓储库存，根据商品code
	 */
	List<Map<String, Object>> searchStockControlByCode(List<String> list);

	/**
	 * 查询统计未入库的采购库存，根据商品code
	 */
	//List<Map<String, Object>> searchNoStorageCountByShopCode(@Param("shopCode") String shopCode);
	List<Map<String, Object>> searchNoStorageCountByShopCode(List<String> list);

	/**
	 * 查询统计未入库的采购库存的合计
	 */
	List<Map<String, Object>> searchNoStorageCountByShopCodeTotal(Map<String, Object> searchInfo);


	/**
	 * 查询仓储库存的合计
	 */
	List<Map<String, Object>> searchStockControlByCodeTotal(Map<String, Object> searchInfo);



	/**
	 * 查询仓储库存，根据所有商品code
	 */
	List<Map<String, Object>> searchStockControlByAllCode();

	/**
	 * 查询统计未入库的采购库存，根据所有商品code
	 */
	List<Map<String, Object>> searchNoStorageCountByAllShopCode();


	int delTpAnalysisDailyTargetByInfoTime(@Param("infoTime") String infoTime);

	/**
	 * 批量新增运营日报表数据
	 */
	int insertTpAnalysisDailyTarget(List<TpAnalysisDailyTarget> list);

	/**
	 * 批量新增财务事件信息表
	 * @param list
	 * @return
	 */
	public int insertBatchTcwFinancesApiData(List<TcwFinancesApiData> list);

	/**
	 * 批量新增二次财务事件信息表
	 * @param list
	 * @return
	 */
	public int insertBatchTcwFinancesInfo(List<TcwFinancesApiInFo> list);

	/**
	 * 批量新增二次财务事件订单id信息表
	 * @param list
	 * @return
	 */
	public int insertBatchTcwFinancesInfoId(List<TcwFinancesApiInFoId> list);

	//删除财务事件一次明细
	void deleteFinancesApiData();
	//删除财务事件二次明细
	void deleteFinancesApiInFo(@Param("financialEventGroupId")String financialEventGroupId);
	//删除财务事件二次明细订单
	void deleteFinancesApiInFoId(@Param("financialEventGroupId")String financialEventGroupId);
	//删除财务事件明细
	void deleteFinancesEGid(@Param("financialEventGroupId")String financialEventGroupId);
	//删除财务目录
	void deleteFinancesEventGroups(@Param("financialEventGroupId")String financialEventGroupId);

	/**
	 * 批量修改财务分组信息表
	 * @param list
	 * @return
	 */
	int updateBatchFinancesEventGroups(List<TcwFinancesEventGroups> list);

	//删除广告报告记录
	int delADSReportLog();

	/**
	 *一键新增pc字段
	 */
	List<Map<String, Object>> searchPC(@Param("name") String name);

	//删除广告活动预算表
	void deleteAdsSpCampaigns(@Param("shopId")String shopGuid,@Param("date")String date);
	//删除广告位报表
	void deleteAdsSpCampaignsPlacement(@Param("shopId")String shopGuid,@Param("date")String date);
	//删除广告组投放表
	void deleteAdsTargeting(@Param("shopId")String shopGuid,@Param("date")String date);
	//删除广告组搜索词表
	void deleteSearchTerm(@Param("shopId")String shopGuid,@Param("date")String date);
	//删除广告商品表
	void deleteSpAdvertisedProduct(@Param("shopId")String shopGuid,@Param("date")String date);
	//删除非广告商品订单情况表
	void deleteSpPurchasedProduct(@Param("shopId")String shopGuid,@Param("date")String date);

	//批量添加广告活动预算表
	int insertBatchAdsSpCampaigns(List<AdsSpCampaigns> list);
	//批量添加广告位报表
	int insertBatchAdsSpCampaignsPlacement(List<AdsSpCampaignsPlacement> list);
	//批量广告组投放表
	int insertBatchAdsTargeting(List<AdsSpTargeting> list);
	//批量添加广告组搜索词表
	int insertBatchAdsSearchTerm(List<AdsSpSearchTerm> list);
	//批量添加广告商品表
	int insertBatchSpAdvertisedProduct(List<AdsSpAdvertisedProduct> list);
	//批量非广告商品订单情况表
	int insertBatchSpPurchasedProduct(List<AdsSpPurchasedProduct> list);
	
	// 备份数据库
	void backupDataBase(@Param("dataBaseName")String dataBaseName, @Param("pathFile")String pathFile);
	
	// 删除备份文件
	void deleteBackupDataBaseFile();

	List<Map<String, Object>> getasd();

	void deleteaaa(@Param("financialEventGroupId")String financialEventGroupId);

	// 删除A+信息表，根据精品库站点详情信息id
	void delAplusFileByBoutiqueSiteDetailId(@Param("boutiqueSiteDetailId")Long boutiqueSiteDetailId);

	// 通过商品编码修改精品库中精品是否生效(0未生效，1已生效)信息
	int updateTpBoutiqueBoutiqueIsEffect(TpBoutique tpBoutique);

	// 删除商品库子件信息，根据子件编码
	void delTpBoutiqueBoutiqueByCode(@Param("code")String code);

	//获取数据库表对应字段的设置长度、设置的数据类型
	List<Map<String, Object>> getTableColLengthAndDataType(@Param("tableName")String tableName);


	/**
	 * 批量财务分组信息表
	 * @param list
	 * @return
	 */
	int insetBatchFinancesEventGroupsOp(List<TcwFinancesEventGroupsOp> list);

	/**
	 * 批量删除
	 * @param list
	 * @return
	 */
	int deleteBatchFinancesEventGroupsOp(List<TcwFinancesEventGroupsOp> list);

	int updateProductBasisComponent(TpProductBasisComponent tpProductBasisComponent);

	int updateProductActiveComponent(TpProductActiveComponent tpProductActiveComponent);


	// 删除listing库子件信息，根据子件编码
	void delTpProductActiveComponentByCode(@Param("code")String code);

	// 删除精品库附件，根据精品库站点详情信息id
	void delBoutiqueSiteFileByBoutiqueSiteDetailId(@Param("boutiqueSiteDetailId")Long boutiqueSiteDetailId);


	/**
	 * 根据商品编码批量修改精品库、商品库的公司编码信息
	 */
	int updateProductActiveAndBasis(@Param("code")String code,@Param("vgsbm")String vgsbm);


	/**
	 * 删除万里汇多账户店铺信息
	 * @param accountNo
	 */
	void deleteWfStoreShop(@Param("accountNo")String accountNo);

	/**
	 * 删除员工工资申请表
	 * @param pid
	 */
	void deleteTbUserPayApplyItemPid(@Param("pid") Long pid);

	/**
	 * 删除工资付款
	 * @param bid
	 */
	void deleteTbPayrollSlipItemBid(@Param("bid") String bid);


	/**
	 * 新增实体
	 * @author Jason
	 */
	int insertTcwAccountDetailedForCompany(TcwAccountDetailedForCompany entity);

	/**
	 * 删除医保付款详情
	 * @param bid
	 */
	void deleteTbMedicarePayItemBid(@Param("bid") String bid);

	/**
	 * 删除社保付款详情
	 * @param bid
	 */
	void deleteTbSocialSecurityPayItemBid(@Param("bid") String bid);

	/**
	 * 删除公积金付款详情
	 * @param bid
	 */
	void deleteTbReservedPayItemBid(@Param("bid") String bid);

	/**
	 * 删除个税付款详情
	 * @param bid
	 */
	void deleteTbIncomePayItemBid(@Param("bid") String bid);

	// 删除附件表信息，根据来源类型、对应的单据ID
	void delTbFileInfoBySourceTypeAndSourceId(@Param("sourceType")int sourceType,@Param("sourceId")Long sourceId);

	/**
	 * 删除万里汇货币兑换详情
	 * @param bid
	 */
	void deleteTcwWanliCurrencyExchangeBid(@Param("bid") String bid);

	/**
	 * 删除预付款退回申请详情
	 * @param bid
	 */
	void deleteTcwPaymentReturnBid(@Param("bid") String bid);

	/**
	 * 删除预约采购详情
	 * @param bid
	 */
	void deleteTcgPurchaseAppointOrderBid(@Param("bid") String bid);

	/**
	 * 删除预约采购详情2
	 * @param id
	 */
	void deleteTcgPurchaseAppointOrderItemPid(@Param("id") Long id);


	/**
	 * 删除万里汇预付款退回详情
	 * @param bid
	 */
	void deleteTcwWanliPaymentReturnBid(@Param("bid") String bid);


	/**
	 * 批量新增万里汇流水信息
	 * @param tcwWanliPrepaymentPoolingList
	 * @return
	 */
	int insetBatchTcwWanliPrepaymentPooling(List<TcwWanliPrepaymentPooling> tcwWanliPrepaymentPoolingList);

	/**
	 * 删除万里汇预付款归集明细
	 * @param startTimeStr 开始时间 endTimeStr结束时间
	 */
	void deleteTcwWanliPrepaymentPoolingDate(@Param("startTimeStr") String startTimeStr,@Param("endTimeStr") String endTimeStr);

	/**
	 * 获取头程运费对应公司上个月的交易金额总和
	 * @param vgsbm
	 * @return
	 */
	BigDecimal getFjeSum(@Param("vgsbm") String vgsbm);


	/**
	 * 批量新增运营电子发票开票单
	 * @param tcwElectronicInvoiceList
	 * @return
	 */
	int insetBatchTcwElectronicInvoice(List<TcwElectronicInvoice> tcwElectronicInvoiceList);

	/**
	 * 形式发票获取交易类型总和
	 * @param vgsbm
	 * @return
	 */
	Map<String, Object> getFjeSumList(@Param("vgsbm") String vgsbm);

	/**
	 * 批量新增运营形式发票开票单
	 * @param tcwProformaInvoiceList
	 * @return
	 */
	int insetBatchTcwProformaInvoice(List<TcwProformaInvoice> tcwProformaInvoiceList);

	/**
	 * 批量新增运营形式发票开票单详情
	 * @param tcwProformaInvoiceItemList
	 * @return
	 */
	int insetBatchTcwProformaInvoiceItem(List<TcwProformaInvoiceItem> tcwProformaInvoiceItemList);

	/**
	 * 查询某家公司当下订单详情对应月份采购订单
	 */
	List<Map<String, Object>> getPurchaseOrderSonList(@Param("vgsBm") String vgsBm,@Param("startTimeStr") String startTimeStr,@Param("endTimeStr") String endTimeStr);

	/**
	 * 查询某家公司当下订单详情对应月份采购报错数据
	 */
	List<Map<String, Object>> getPurchasingErrorList(@Param("vgsBm") String vgsBm,@Param("startTimeStr") String startTimeStr,@Param("endTimeStr") String endTimeStr);


	/**
	 * 每分钟同步1.0和1.5货位信息
	 */
	int synchronizationChw();
}